<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#btn{
			width:40px; 
			height:40px; 
			position:fixed; 
			right:25px; 
			bottom:10px; 
			display:none; 
		}

	</style>
</head>
<body>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li>
		<li>6</li>
		<li>7</li>
		<li>8</li>
		<li>9</li>
		<li>10</li>
		<li>11</li>
		<li>12</li>
		<li>13</li>
		<li>14</li>
		<li>15</li>
		<li>16</li>
		<li>17</li>
		<li>18</li>
		<li>19</li>
		<li>20</li>
		<li>21</li>
		<li>22</li>
		<li>23</li>
		<li>24</li>
		<li>25</li>
		<li>26</li>
		<li>27</li>
		<li>28</li>
		<li>29</li>
		<li>30</li>
		<li>31</li>
		<li>32</li>
		<li>33</li>
		<li>34</li>
		<li>35</li>
		<li>36</li>
		<li>37</li>
		<li>38</li>
		<li>39</li>
		<li>40</li>
		<li>41</li>
		<li>42</li>
		<li>43</li>
		<li>44</li>
		<li>45</li>
		<li>46</li>
		<li>47</li>
		<li>48</li>
		<li>49</li>
		<li>50</li>
		<li>51</li>
		<li>52</li>
		<li>53</li>
		<li>54</li>
		<li>55</li>
		<li>56</li>
		<li>57</li>
		<li>58</li>
		<li>59</li>
		<li>60</li>
		<li>61</li>
		<li>62</li>
		<li>63</li>
		<li>64</li>
		<li>65</li>
		<li>66</li>
		<li>67</li>
		<li>68</li>
		<li>69</li>
		<li>70</li>
		<li>71</li>
		<li>72</li>
		<li>73</li>
		<li>74</li>
		<li>75</li>
		<li>76</li>
		<li>77</li>
		<li>78</li>
		<li>79</li>
		<li>80</li>
		<li>81</li>
		<li>82</li>
		<li>83</li>
		<li>84</li>
		<li>85</li>
		<li>86</li>
		<li>87</li>
		<li>88</li>
		<li>89</li>
		<li>90</li>
		<li>91</li>
		<li>92</li>
		<li>93</li>
		<li>94</li>
		<li>95</li>
		<li>96</li>
		<li>97</li>
		<li>98</li>
		<li>99</li>
		<li>100</li>
	</ul>

	<a href="javascript:;" id="btn" title="回到顶部">回到顶部</a>

	<script>
		window.onload = function(){
		    var obtn = document.getElementById('btn');  //获取回到顶部按钮的ID
		    var clientHeight = document.documentElement.clientHeight;   //获取可视区域的高度
		    var timer = null; //定义一个定时器
		    var isTop = true; //定义一个布尔值，用于判断是否到达顶部

		    window.onscroll = function(){         //滚动条滚动事件

		        //获取滚动条的滚动高度
		        var osTop = document.documentElement.scrollTop || document.body.scrollTop; 

		        if(osTop >= clientHeight){  //如果滚动高度大于可视区域高度，则显示回到顶部按钮
		            obtn.style.display = 'block';
		        }else{         //否则隐藏
		            obtn.style.display = 'none';
		        }

		        //主要用于判断当 点击回到顶部按钮后 滚动条在回滚过程中，若手动滚动滚动条，则清除定时器
		        if(!isTop){

		            clearInterval(timer);
		        }
		        isTop = false;

		    }

		    obtn.onclick = function(){    //回到顶部按钮点击事件
		        //设置一个定时器
		        timer = setInterval(function(){
		            //获取滚动条的滚动高度
		            var osTop = document.documentElement.scrollTop || document.body.scrollTop;
		            //用于设置速度差，产生缓动的效果
		            var speed = Math.floor(-osTop / 6);
		            document.documentElement.scrollTop = document.body.scrollTop = osTop + speed;
		            isTop =true;  //用于阻止滚动事件清除定时器
		            if(osTop == 0){
		                clearInterval(timer);
		            }
		        },30);
		    }
		}

	</script>
	
</body>
</html>